A non-volatile memory device controller or driver may encode or transform data to be written to a non-volatile medium. Data may be encoded or transformed in a variety of ways, such as by compressing the data, encrypting the data, scrambling or whitening the data (so that an approximately equal number of binary zeros and ones are stored), applying an error correcting code to the data, or the like.
When a read operation is performed for the non-volatile medium, errors may be present in the data. Errors may arise due to various phenomena that affect the stored data, such as charge leakage, disturbances from programming or erasing data in nearby regions of the non-volatile medium, temperature effects, or the like. Errors may also occur as data is moved during read, write, or garbage collection operations.
When the driver or controller decodes the data, or reverses the data transformation, errors may increase the amount of time or power used by the decoder. For example, if a parity check fails for an error correcting code, it may take further time and power to detect and correct the errors before the decoded data can be retrieved. A high error rate may also prevent the decoder from decoding the data, or reversing the data transformation. For example, a decoder for an error-correcting code may fail, and issue an error message indicating that an uncorrectable error has occurred.